
# 自定义分页
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response

class MyPage(PageNumberPagination):
    page_query_param = "page" # ?page=1
    page_size_query_param = "pagesize" # ?pagesize=10
    page_size = 10 # 后端约束每页数量
    max_page_size = 20 # 每页最多20个

    # 重写，自定义分页响应结果
    def get_paginated_response(self, data):
        """
        构建分页响应结果
        :param data: 模型类对象分页的查询集
        :return: 响应对象
        """
        return Response({
            'counts': self.page.paginator.count, # 分页数据总数
            'lists': data,
            'page': self.page.number, # 当前页
            'pages': self.page.paginator.num_pages, # 总页数
            'pagesize': self.page_size # 后端默认每页数量
        })